home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Entertainment / MacMud / Mud 4.0 / stat.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-29  |  1.3 KB  |  57 lines  |  [TEXT/MPS ]

  1. #include "stat.h"
  2. #include "config.h"
  3. #include <Types.h>
  4.  
  5. extern long gMudLibDirID;
  6. extern short gMudLibVolRef;
  7.  
  8. int stat(char *fname, struct stat *buf) {
  9.     Str255 pstr;
  10.     CInfoPBRec pb;
  11.     int i, len = strlen(fname);
  12.  
  13.     pstr[0] = len + 1; pstr[1] = ':';
  14.     memcpy (&pstr[2], fname, len);
  15.     for (i = 0; i < pstr[0]; i++) {
  16.         if (pstr[i] == '/')
  17.             pstr[i] = ':';
  18.     }
  19.     pb.hFileInfo.ioCompletion = NULL;
  20.     pb.hFileInfo.ioNamePtr = pstr;
  21.     pb.hFileInfo.ioFDirIndex = 0;
  22.     pb.hFileInfo.ioVRefNum = gMudLibVolRef;
  23.     pb.hFileInfo.ioDirID = gMudLibDirID;
  24.     pb.hFileInfo.ioResult = noErr;
  25.     if (PBGetCatInfo(&pb, false) != noErr) {
  26.         errno = ENOENT;
  27.         return -1;
  28.     }
  29.     buf->st_mode = S_IFREG;
  30.     if (pb.hFileInfo.ioFlAttrib & 0x10)
  31.         buf->st_mode = S_IFDIR;
  32.     buf->st_size = pb.hFileInfo.ioFlLgLen;
  33.     buf->st_mtime = pb.hFileInfo.ioFlMdDat;
  34.     return 0;
  35. }
  36.  
  37. Boolean touchup(char *filename) {
  38.     char name[256];
  39.     ParamBlockRec paramBlock;
  40.  
  41.     name[0] = strlen(filename);
  42.     memcpy(&name[1], filename, name[0]);
  43.  
  44.     paramBlock.fileParam.ioNamePtr = &name;
  45.     paramBlock.fileParam.ioVRefNum = 0;
  46.     paramBlock.fileParam.ioFVersNum = 0;
  47.     paramBlock.fileParam.ioFDirIndex = 0;
  48.  
  49.     if (PBGetFInfo(¶mBlock, false) == noErr) {
  50.  
  51.         GetDateTime(¶mBlock.fileParam.ioFlMdDat);
  52.         if (PBSetFInfo(¶mBlock, false) == noErr)
  53.             return true;
  54.     }
  55.     return false;
  56. }
  57.